package sessionbeans;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import supportClass.IstanzaDTO;
import supportClass.PacchettoDTO;
import traveldreamEJB.Elemento;
import traveldreamEJB.Istanza;
import traveldreamEJB.Pacchetto;

/**
 * Session Bean implementation class CreaIstanzaSB
 */
@Stateless
public class creaPacchettoSB implements creaPacchettoSBLocal {

    /**
     * Default constructor. 
     */
    public creaPacchettoSB() {
        // TODO Auto-generated constructor stub
    }

	@PersistenceContext
    private EntityManager em;

	@Override
	@RolesAllowed("ADMINS")
	public void creaPacchetto(PacchettoDTO pacchettoDTO, List<IstanzaDTO> istanzeDTO) {
		// TODO Auto-generated method stub
		List<Istanza> istanze= new ArrayList<Istanza>();
		List<Istanza> tmpIst;
		Query allIstanze = em.createNamedQuery("Istanza.findAll");
		
		tmpIst= allIstanze.getResultList();
		for(Istanza istDB: tmpIst)
			for(IstanzaDTO istCreate: istanzeDTO)
				if(istDB.getIdIstanza()==istCreate.getIdIstanza())
					istanze.add(istDB);
		
		Pacchetto newPacchetto= new Pacchetto(pacchettoDTO, istanze);
		em.persist(newPacchetto);
	}

	@Override
	@RolesAllowed("ADMINS")
	public void addIstanzePacchetto(int idPacchetto,
			List<IstanzaDTO> istanzeSelezionate) {
		// TODO Auto-generated method stub
		Pacchetto tmpPacchetto;
		Query pacchettoById= em.createNamedQuery("Pacchetto.findPacchettoByID");
		pacchettoById.setParameter("idPacchetto", idPacchetto);
		tmpPacchetto=(Pacchetto) pacchettoById.getSingleResult();
		
		for(int i=0; i<istanzeSelezionate.size(); i++)
		{
			Elemento tmpEl= new Elemento(istanzeSelezionate.get(i).getElemento());
			tmpPacchetto.getListaIstanze().add(new Istanza(istanzeSelezionate.get(i), tmpEl));
		}
		em.persist(tmpPacchetto);
		
		
	}

}
